# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName : zsj.py
# @Time     : 2024/4/11 22:10
# @Author   : Robot-Zsj
"""
description:

input
ilovechina
i,love,china,ch,na,ve,lo,this,is,the,word
output
i,love,china

现在要用词库里面的词汇组成句子。并且选择词汇时，优先选择词汇库中靠前的，且长度最长的。

比如组成句子“ilovechina”的第一个词汇，必须时“i”开头的，因此我们去词库中找“i”开头的词汇，按词库顺序依次是：

- i
- is

其中is虽然是i开头，但是不符合句子后续部分要求，因此选择词库中词汇“i”

此时句子还剩下“lovechina”没有分词，则继续在词库中查找“l“开头的词汇，按词库顺序依次是

- love
- lo

其中“love”是顺序靠前，且长度较长的，因此选择词库中词汇“love”

...
"""
import re

sentences = list(filter(lambda x: x != "", re.split(r"[,.;]", input())))
words = list(filter(lambda x: x != "", re.split(r"[,.;]", input())))


def getResult():
    wordSet = set(words)
    ans = []

    while len(sentences) > 0:
        # 待分词的句子
        sentence = sentences.pop(0)

        r = len(sentence)
        while r > 0:
            # 截取句子[0,r) 范围子串词汇，这样的就能实现优先最长匹配，并且由于是必须从0索引开始截取，因此满足了分词顺序优先
            fragment = sentence[0:r]

            # 若词库中是否存在该子串词汇
            if fragment in wordSet:
                # 则将对应子串词汇纳入结果
                ans.append(fragment)
                wordSet.remove(fragment) # 每个词汇只能使用一次

                # 若子串词汇只是句子部分，则句子剩余部分还要继续去词库中查找
                if r < len(sentence):
                    sentences.insert(0, sentence[r:])

                break

            r -= 1

        # 没有在词库中找到对应子串词汇，则输出单个字母
        if r == 0:
            ans.append(sentence[0])
            # 注意，这里只放一个字母到结果中，句子剩余部分继续去词库中查找
            if len(sentence) > 1:
                sentences.insert(0, sentence[1:])

    return ",".join(ans)


print(getResult())
